#include <iostream>
#include <stack>
#include <string>
#include <vector>
using namespace std;

class Solution
{
public:
    static string decodeString(string s)
    {
        stack<int> num_st;
        stack<string> string_st;
        string_st.push("");
        int i = 0;

        while(i < s.size())
        {
            if(s[i] >= '0' && s[i] <= '9')
            {
                int tmp = 0;
                while(i < s.size() && s[i] >= '0' && s[i] <= '9')
                    tmp = tmp*10 + (s[i++]-'0');
                num_st.push(tmp);
            }
            if(s[i] == '[')
            {
                i++;//不能写到上面，因为判断完就会++，但是应该是符合条件才++，现在是符不符合都++了
                string ts = "";
                while(i < s.size() && s[i] >= 'a' && s[i] <= 'z')
                    ts += s[i++];
                string_st.push(ts);
            }
            if(s[i] == ']')
            {
                i++;//同理
                int k = num_st.top();
                num_st.pop();
                string ss = string_st.top();
                string_st.pop();
                while(k--)
                    string_st.top() += ss;
            }
            if(s[i] >= 'a' && s[i] <= 'z')
            {
                string tmp;
                while(i < s.size() && s[i] >= 'a' && s[i] <= 'z')
                    tmp += s[i++];
                string_st.top() += tmp;
            }
        }
        return string_st.top();
    }
};